# Create your views here.
from rest_framework.viewsets import ReadOnlyModelViewSet
from rest_framework_extensions.cache.mixins import CacheResponseMixin

from areas.models import Area
from areas.serializers import AreaSerializer, SubAreaSerializer

# CacheResponseMixin 是已扩展类方式为 list 和retrieve添加了装饰， 以缓存数据
class AreasViewSet(CacheResponseMixin, ReadOnlyModelViewSet):
    """
     GET /areas/infos/
    前端点击新增，就要返回省的信息
    GET/areas/infos/(?P<pk>\d+)/
    前段端机选择省份后， 前段返回省的id信息， 后端根据id 返回对应的所有市的信息
    前段点击市的信息， 前段返回市的id， 后端根据id返回对应区县的信息
    """
    pagination_class = None

    def get_queryset(self):
        # 提供数据集
        if self.action == 'list':
            return Area.objects.filter(parent_id = None)
        else:
            return Area.objects.all()  #  retrieve 中的 get_object() 会赛选

    def get_serializer_class(self, *args, **kwargs):
        # 指定序列化器
        if self.action == 'list':
            return AreaSerializer
        else:
            return SubAreaSerializer


